package basicGrammar;

import java.util.Arrays;

public class Demo5_Array {

    /*
        数组：可以用来存储一组相同类型数据的容器
          一组
          相同类型
          容器：在java中，有一个类专门用来存储其他类的对象
        特点：
          数组本身就是数据类型
          长度固定，不可以发生变化
          数组中的元素类型必须一致
          数组中的元素内容可以改变
        语法：
          声明：int i; int[] fruits /  int fruits[]
          初始化：给数组定义原始数据或长度
            静态初始化：一次性把数据全部写入
                int[] nums = {1,2,3,4,5,6,7};
            动态初始化:只给数组定义长度，并不给定具体的元素
              如果数组的类型是基本数据类型，本身有默认值
              如果数组的类型是引用数据类型，null
                int[] nums = new int[5];

        操作
            取值
                索引：表示数组中的元素的位置，从0开始
            赋值(修改元素值)
            遍历:通过循环的方式把数组中的所有元素获取到
              forEach 增强型for循环
            排序(排序算法)
              内部排序：数据是加载到内存中
              外部排序：借助外部存储
            时间频度
              算法中语句执行的次数称为时间频度，T(n)
            时间复杂度

     */

    public static void main(String[] args) {
        //静态初始化
//        int[] nums_quiet = {1,2,3,4,5};

//        int length = nums_quiet.length;
//        System.out.println(nums_quiet[3]);
//        nums_quiet[3] = 6;
//        System.out.println(nums_quiet[3]);

        //动态初始化
//        int[] nums_active = new int[8];
//
//        for(int i=0;i<=nums_active.length-1;i++){
//            System.out.println(nums_active[i]);
//        }
//
//        nums_active[7] = 10;
//        nums_active[5] = 8;
//
//        for(int i=0;i<=nums_active.length-1;i++){
//            System.out.println(nums_active[i]);
//        }
//
//        int i = 0;
//        while(i<=nums_active.length-1){
//            System.out.println(nums_active[i]);
//            i++;
//        }

        //forEach 增强型for循环
//        for(int i:nums_active){
//            System.out.println(i);
//        }


        //创建一个数组，用来存储全班同学的身高
        //创建一个数组,用来存储 1000000以内的所有偶数
//        int num = 100;
//        int[] evenNum = new int[num/2];
//        int j = 0;
//        for(int i=1;i<=num;i++){
//            if(i%2==0){
//                evenNum[j] = i;
//                j++;
//            }
//        }
//
//        for (int i : evenNum) {
//            System.out.println(i);
//        }

        //取一个数组中所有数字的最大值
//        int[] nums = {6,6,5,3,4,9,2,1,10,53,2,1};
//        int max = 0;
//        for(int num:nums){
//            if(num>max){
//                max = num;
//            }
//        }
//        System.out.println(max);


        //一个数组中相邻的两个元素交换位置
        //{1,2,3,4,5,6} {2,1,4,3,6,5}
//        int[] nums = {1,2,3,4,5,6,7};
//        int temp = 0;
//        for(int i=0;i<nums.length;i++){
//            if(i%2==0){
//                temp = nums[i];
//            }else{
//                nums[i-1] = nums[i];
//                nums[i] = temp;
//            }
//        }
//
//        System.out.println(Arrays.toString(nums));

        //{1,2,3,4,5,6} {6,5,4,3,2,1}
//        int[] nums = {1,2,3,4,5,6,7};
//        int temp = 0;
//        for (int i = 0; i < nums.length/2; i++) {
//            temp = nums[i];
//            nums[i] = nums[nums.length-1-i];
//            nums[nums.length-1-i] = temp;
//        }
//        System.out.println(Arrays.toString(nums));

//        int a = 10;
//        int b = 20;
//        int temp = 0;
//
//        temp = a;
//        a = b;
//        b = temp;

//        System.out.println(a);
//        System.out.println(b);
        //两个数组元素交换位置
        //{1,2,3,4}{5,6,7,8} -> {5,6,7,8}{1,2,3,4}
//        int[] firstArr = {1,2,3,4};
//        int[] secondArr = {5,6,7,8};
//
//        int temp = 0;
//        for(int i=0;i<=firstArr.length-1;i++){
//            temp = firstArr[i];
//            firstArr[i] = secondArr[i];
//            secondArr[i] = temp;
//        }
//
//        System.out.println(Arrays.toString(firstArr));
//        System.out.println(Arrays.toString(secondArr));


        //两个数组收尾交换
        //{1,2,3,4}{5,6,7,8} -> {8,7,6,5}{4,3,2,1}
//        int[] firstArr = {1,2,3,4};
//        int[] secondArr = {5,6,7,8};
//
//        int temp = 0;
//        for (int i = 0; i < firstArr.length; i++) {
//            temp = firstArr[i];
//            firstArr[i] = secondArr[firstArr.length-1-i];
//            secondArr[firstArr.length-1-i] = temp;
//        }
//        System.out.println(Arrays.toString(firstArr));
//        System.out.println(Arrays.toString(secondArr));

        //一个数组，拆分成两个数组
        //{1,2,3,4,5,6} -> {1,2,3}{4,5,6}
//        int[] nums = {1,2,3,4,5,6,7};
//        int[] n1 = new int[nums.length%2==0?nums.length/2:nums.length/2+1];
//        int[] n2 = new int[nums.length-n1.length];
//
//        for (int i = 0; i < nums.length; i++) {
//            if (i<n1.length) {
//                n1[i] = nums[i];
//            }else{
//                n2[i-n1.length] = nums[i];
//            }
//        }
//        System.out.println(Arrays.toString(n1));
//        System.out.println(Arrays.toString(n2));

        //两个数组合并成一个数组
        //{1,2,3}{4,5,6} -> {1,2,3,4,5,6}
//        int[] v1 = {1,2,3};
//        int[] v2 = {4,5,6};
//
//        int[] v = new int[v1.length+v2.length];
//
//        for (int i = 0; i < v.length; i++) {
//            if(i<v1.length){
//                v[i] = v1[i];
//            }else{
//                v[i] = v2[i-v1.length];
//            }
//        }
//        System.out.println(Arrays.toString(v));

        //把数组中的非零元素输出
        //{2,9,0,5,0,0,3,2} -> {2,9,5,3,2}
//        int[] nums = {2,9,0,5,0,0,3,2};
//        int count = 0;
//        for (int num : nums) {
//            if(num!=0){
//                count++;
//            }
//        }
//
//        int[] numsNoZero = new int[count];
//
//        int j=0;
//        for (int i = 0; i < nums.length; i++) {
//            if(nums[i]!=0){
//                numsNoZero[j] = nums[i];
//                j++;
//            }
//        }
//        System.out.println(Arrays.toString(numsNoZero));

//        int[] nums = {2,9,0,5,0,0,3,2};
//        int[] numsNoZero = new int[nums.length];
//        int j=0;
//        for (int i = 0; i < numsNoZero.length ; i++) {
//            if(nums[i]!=0){
//                numsNoZero[j] = nums[i];
//                j++;
//            }
//        }
//
//        for (int num : numsNoZero) {
//            if(num!=0){
//                System.out.println(num);
//            }
//        }

        //1-100求和
        int sum = 0;
        for (int i = 1; i <=100 ; i++) {
            sum+=i;
        }

        //T(n)=1
        int sum1 =(1+100)*100/2;

    }

}
